feat: stabilize SFTP and add secure SSH terminal integration - #2694
Open
bajrangCoder wants to merge 6 commits into
Open
feat: stabilize SFTP and add secure SSH terminal integration#2694bajrangCoder wants to merge 6 commits into
bajrangCoder wants to merge 6 commits into
Conversation
Contributor
Greptile SummaryThe PR moves SFTP credentials into encrypted native profiles, migrates existing persisted SFTP URLs, improves connection and removal lifecycle handling, and adds interactive SSH terminal sessions.
Confidence Score: 5/5The PR appears safe to merge within the scope of this follow-up review. No blocking failure remains in the eligible follow-up findings. Important Files Changed
Sequence DiagramsequenceDiagram
participant App as Acode startup
participant Migration as sftpProfiles.js
participant Native as SFTP Cordova plugin
participant Store as Encrypted profile store
participant Browser as File browser / fsOperation
participant Terminal as SSH terminal
App->>Migration: Migrate persisted legacy SFTP URLs
Migration->>Native: Save credential profile
Native->>Store: Encrypt and persist profile
Store-->>Native: profile ID
Native-->>Migration: profile ID
Migration-->>App: Persist sftp://profile-ID/path
Browser->>Native: Connect using profile ID
Native->>Store: Decrypt profile internally
Native-->>Browser: SFTP connection and operations
Terminal->>Native: Open shell using profile ID
Native-->>Terminal: ready
Native-->>Terminal: base64 terminal data
Terminal->>Native: ordered input and PTY resize
Native-->>Terminal: exit or error
Reviews (2): Last reviewed commit: "perf(sftp): run legacy profile migration..." | Re-trigger Greptile |
bajrangCoder
requested review from
Elitex07,
RohitKushvaha01,
UnschooledGamer and
deadlyjack
August 8, 2026 03:33
RohitKushvaha01
requested changes
Aug 8, 2026
This comment has been minimized.
This comment has been minimized.
|
Preview Release for this, has been built. |
This comment was marked as outdated.
This comment was marked as outdated.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR improves the reliability and security of Acode's SFTP integration and adds interactive SSH terminal support using the existing Maverick Synergy SSH library.
It addresses the SFTP lifecycle, cleanup, and path issues reported in:
SFTP reliability improvements
SSH terminal integration
SessionChannelNG.xterm-256colorPTY and start an interactive remote shell.Secure SFTP profiles
Previously, SFTP URLs could contain usernames, passwords, key-file paths, and passphrases.
This PR replaces persisted connection URLs with opaque identifiers:
The corresponding connection profile is stored natively and encrypted using:
Encrypted profiles contain the server details and authentication material. Profile reads exposed to JavaScript return metadata only and never return passwords, passphrases, or private-key contents.
Private-key files selected for new profiles are read by the native plugin and stored inside the encrypted profile instead of being copied into an SFTP URL.
Migration
On startup, legacy SFTP URLs are migrated across:
Migration behavior is intentionally conservative: